#ifndef _PLI_H
#define _PLI_H



#include "../lib/common.h"
#include "../lib/compare.h"


#define PLI_MODEL_PATH  "_SFTP_PLI.mod"  /**< endereco do arquivo do modelo */
#define PLI_DATA_PATH   "_SFTP_PLI.dat"  /**< endereco do arquivo de dados */
#define PLI_SOL_PATH    "_SFTP_PLI.sol"  /**< endereco do arquivo da solucao */
#define PLI_DISP_PATH   "_SFTP_PLI.disp" /**< enderedo do arquivo de display */
#define PLI_LOG_PATH    "_SFTP_PLI.log"  /**< enderedo do arquivo de log */
#define MB_PER_NODE     0.5              /**< total de mb por no (limite de nos) */
#define MAX_COMM_LENGTH 500              /**< tamanho maximo de um comando */
#define DELETE_PLI_FILES 0               /**< apaga os arquivos gerados */
#define DEBUG 0                          /**< modo debug */



/** Funcao que apaga os arquivos gerados
 */
void deleteFiles();


/** Funcao que gera o arquivo do modelo PLI em GMPL
 */
void genModFile();


/** Funcao que gera o arquivo de dados
 * @param jobs Vetor contendo os jobs
 * @param nJobs Total de jobs
 */
void genDataFile(const Job *jobs, const int nJobs);


/** Funcao que gera o arquivo de solucao
 * @param maxExecTime Temop maximo de execucao (em segundos)
 * @param maxNodes Numero maximo de nos explorados
 */
void genSolFile(const int maxExecTime, const int maxNodes);


/** Funcao que imprime a solucao encontrada
 * @param nJobs Total de jobs
 */
void printSol(const int nJobs);


/** Funcao principal
 * @param argc Total de argumentos
 * @param argv Vetor de string dos argumentos
 *
 * @return
 *      - EXIT_SUCCESS: saida com sucesso
 *      - EXIT_FAILURE: saida com erro
 */
int main(int argc, char *argv[]);


#endif

